//#pragma once
//#include "KdTree.h"
//#include <Eigen/Eigen>
//#include <unordered_set>
//
//class DBSCAN
//{
//	using EVec = std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d>>;
//	struct Para
//	{
//		double _radius{0.5};
//		int _min_size{4};
//		Para() {
//
//		}
//	};
//public:
//	DBSCAN(Para para = Para()):_para(para){}
//
//	std::vector<std::vector<unsigned int>> fit(const EVec& points);
//
//private:
//	void findPoints(
//		const DBSCAN::EVec& points,
//		int search_point,
//		KdTree& kdTree,
//		std::vector<std::vector<unsigned int>>& res);
//	std::unordered_set<unsigned int> _res;
//private:
//	Para _para;
//};